// 全局过滤器，在实例化之前申明，否则会报错（但不影响使用）。
Vue.filter('money', function (value, type) {
    console.log("全局过滤器 ：money");//任何数据的改变均会重新调用过滤器
    return "¥" + value.toFixed(2) + type;
});
Vue.filter('titleFilter', function (value) {
    console.log("全局过滤器 ：titleFilter'");//任何数据的改变均会重新调用过滤器
    return "T" + value;
});
new Vue({
    el: '#app',
    data: {
        title: '购物车',
        totalMoney: 0,
        productList: [],
        checkAllFlag: false,
        delFlag: false,
        curProduct: ''
    },
    filters: {
        formatMoney: function (value) {
            return "¥" + value.toFixed(2);
        }/*,
        money: function (value, agr1) {
            return value + " " + agr1;
        }*/
    },
    mounted: function () {
        this.$nextTick(function () {
            this.cartView();
        })
    },
    methods: {
        cartView: function () {
            var _this = this;
            this.$http.get("data/cartData.json", {"id": 123}).then(function (res) {
                //           把json字符串转换成json对象,解决 购物车商品没有渲染问题
                _this.productList = res.body.result.list;
                _this.totalMoney = res.body.result.totalMoney;

            });
        },
        changeMoney: function (product, way) {
            if (way > 0) {
                product.productQuantity++;
            } else {
                product.productQuantity--;
                if (product.productQuantity < 1) {
                    product.productQuantity = 1;
                }
            }
            this.calcTotalPrice();

        },
        selectedProduct: function (item) {
            if (typeof item.checked == 'undefined') {
                // Vue.set(item, "checked", true);
                this.$set(item, "checked", true);
            } else {
                item.checked = !item.checked;
            }
            this.calcTotalPrice();
        },
        checkAll: function (flag) {
            this.checkAllFlag = flag;
            var _this = this;
            this.productList.forEach(function (item, index) {
                if (typeof item.checked == 'undefined', _this.checkAllFlag) {
                    //未定义的属性，动态添加一个属性
                    _this.$set(item, "checked", _this.checkAllFlag);
                } else {
                    item.checked = _this.checkAllFlag;
                }
            });
            this.calcTotalPrice();
        },
        calcTotalPrice: function () {
            var _this = this;
            this.totalMoney = 0;
            this.productList.forEach(function (item, index) {
                if (item.checked) {
                    _this.totalMoney += item.productPrice * item.productQuantity;
                }
            });
        },
        delConfirm: function (item) {
            this.delFlag = true;
            this.curProduct = item;
        },
        delProduct: function () {
            var index = this.productList.indexOf(this.curProduct);
            this.productList.splice(index, 1);
            this.delFlag = false;
        }
    }
});
